#include"linked_list.h"

void test1()
{
	SLTNode* phead = NULL;
	SLTPushBack(&phead, 1);
	SLTPushBack(&phead, 2);
	SLTPushBack(&phead, 3);
	SLTPushBack(&phead, 4);
	SLTPrint(phead);
	SLTPushFront(&phead, 5);
	SLTPushFront(&phead, 6);
	SLTPushFront(&phead, 7);
	SLTPushFront(&phead, 8);
	SLTPrint(phead);
	SLTPopBack(&phead);
	SLTPopFront(&phead);
	SLTPrint(phead);
	SListDesTroy(&phead);
}

void test2()
{
	SLTNode* phead = NULL;
	SLTPushBack(&phead, 1);
	SLTPushBack(&phead, 2);
	SLTPushBack(&phead, 3);
	SLTPushBack(&phead, 4);
	SLTPushBack(&phead, 5);
	SLTPushBack(&phead, 6);
	SLTPushBack(&phead, 7);
	SLTPushBack(&phead, 8);
	SLTNode* flag = SLTFind(phead, 9);
	NodePrint(flag);
	SListDesTroy(&phead);
}

void test3()
{
	SLTNode* phead = NULL;
	SLTPushBack(&phead, 1);
	SLTPushBack(&phead, 2);
	SLTPushBack(&phead, 3);
	SLTPushBack(&phead, 4);
	SLTPushBack(&phead, 5);
	SLTPushBack(&phead, 6);
	SLTPushBack(&phead, 7);
	SLTPushBack(&phead, 8);
	SLTPrint(phead);
	SLTNode* flag = SLTFind(phead, 5);
	SLTInsert(&phead, flag, 9);
	SLTInsertAfter(&phead, flag, 9);
	SLTPrint(phead);
	SListDesTroy(&phead);
}

void test4()
{
	SLTNode* phead = NULL;
	SLTPushBack(&phead, 1);
	SLTPushBack(&phead, 2);
	SLTPushBack(&phead, 3);
	SLTPushBack(&phead, 4);
	SLTPushBack(&phead, 5);
	SLTPushBack(&phead, 6);
	SLTPushBack(&phead, 7);
	SLTPushBack(&phead, 8);
	SLTPrint(phead);
	SLTNode* flag = SLTFind(phead, 5);
	SLTErase(&phead, flag);
	SLTPrint(phead);
	flag = SLTFind(phead, 4);
	SLTEraseAfter(flag);
	SLTPrint(phead);
	SListDesTroy(&phead);
}

int main()
{
	test1();
	printf("\n");
	printf("\n");
	test2();
	printf("\n");
	printf("\n");
	test3();
	printf("\n");
	printf("\n");
	test4();
	return 0;
}